# 1. 连接设备，启动app
import random
import time
from appium import webdriver
# 手势操作
from appium.webdriver.common.touch_action import TouchAction

from selenium.webdriver.support.wait import WebDriverWait

# 连接信息 [背下来的]
desired_caps = {
    "deviceName": "Android Emulator",  # 设备名
    "udid": "127.0.0.1:62001",  # 设备唯一标识   adb devices
    "platformName": "Android",  # 手机系统
    "platformVersion": "5.1.1",  # 手机版本
    "appPackage": "com.mobivans.onestrokecharge",  # 连接后启动的app包名
    "appActivity": "com.stub.stub01.Stub01",  # 连接后启动app的类名
    "unicodeKeyboard": True,  # 使用支持中文的输入法
    "resetKeyboard": True  # 停止的时候重置输入法
}
# 2. 连接
# wd :表示的是webdriver协议  --- selenium用的也是这个。
# hub : 表示 集线器  ， 可以连接多个手机。
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_capabilities=desired_caps)
# 太快？  以前selenium ---> sleep,隐式等待，显示等待
driver.implicitly_wait(10)  # 隐式等待10秒
# 3. 一系列操作
# 问题1：xpath太长了  --->
# 方法一：uiautomatorviewer.bat 重新定位 获取优化后的xpath （官方是不推荐的）
el1 = driver.find_element_by_xpath("//android.widget.TextView[@text='记一笔']")
el1.click()

# el2 = driver.find_element_by_xpath("//android.widget.TextView[@text='股票']")
# 方法二： 可以用个Android 自带的方法定位  （推荐的方法，很强大 ， ---需要学习）  【注意text中的文本用双引号】
# el2=driver.find_element_by_android_uiautomator('text("股票")')
# el2.click()
# 随机选一个进行点击   --> 拿到所有元素 ，随机选一个 进行点击
all_els = driver.find_elements_by_id("com.mobivans.onestrokecharge:id/item_cate_text")
# print(all_els)
for e in all_els:
    print(e.text)  # 拿元素的文本
    # print(e.get_attribute("bounds"))  # 拿任何的属性

random_el = random.choice(all_els)  # 随机选一个
random_el.click()

#
#
el3 = driver.find_element_by_id("com.mobivans.onestrokecharge:id/keyb_btn_9")
el3.click()
el4 = driver.find_element_by_id("com.mobivans.onestrokecharge:id/add_et_remark")
el4.click()
el4.send_keys("飞天茅台")

el5 = driver.find_element_by_id("com.mobivans.onestrokecharge:id/keyb_btn_finish")
el5.click()

# 千万不要忘记perform 执行操作
# 太快了，需要等待？

# 等待元素（结余）出现
# el6=driver.find_element_by_id("com.mobivans.onestrokecharge:id/account_item_txt_allin")
WebDriverWait(driver, 20).until(
    lambda x: x.find_element_by_id("com.mobivans.onestrokecharge:id/account_item_txt_allin"))

TouchAction(driver).tap(x=341, y=722).perform()  # tap 表示按一下

# 显示等待一个元素消失，在做操作
# WebDriverWait(driver, 20).until_not(lambda x: x.find_element_by_android_uiautomator('text("长按记录可删除")'))
# TouchAction(driver).press(x=344, y=346).move_to(x=341,y=1142).release().perform()  # press 表示按下不放，move_to 移动到 ，release释放


#长按，完成删除。
el6=driver.find_element_by_id("com.mobivans.onestrokecharge:id/account_item_txt_remark")
TouchAction(driver).long_press(el6,3).perform()   # 在元素上按3秒。
el7=WebDriverWait(driver,20).until(lambda x:x.find_element_by_id("com.mobivans.onestrokecharge:id/alert_tv_ok"))  # 等待确认框
el7.click()


time.sleep(60)
driver.quit()








